package cn.xy.base.server.service;


import cn.xy.base.server.po.SysAttachment;
import org.springframework.web.multipart.MultipartFile;

import java.awt.*;
import java.io.InputStream;

/**
 *  @author xy
 */
public interface UploadService {

    /**
     * 上传文件
     *
     * @param file file
     * @return 访问路径
     */
    String upload(MultipartFile file);

    /**
     * 上传文件
     *
     * @param file             file
     * @param basePath         存储路径
     * @param generateCompress 生成缩略图
     * @return 访问路径
     */
    String upload(MultipartFile file, String basePath, boolean generateCompress);

    /**
     * 上传文件
     *
     * @param inputStream inputStream
     * @param filename    文件名
     * @return 访问路径
     */
    String upload(InputStream inputStream, String filename);

    /**
     * 上传文件
     *
     * @param inputStream      inputStream
     * @param filename         文件名
     * @param basePath         存储路径
     * @param generateCompress 生成缩略图
     * @return 访问路径
     */
    String upload(InputStream inputStream, String filename, String basePath, boolean generateCompress);

    /**
     * 生成缩略图
     *
     * @param inputStream inputStream
     * @return 缩略图
     */
    Image generateCompress(InputStream inputStream);

    /**
     * 通过URL获取上传的文件
     *
     * @param url url
     * @return byte[]
     */
    byte[] getByteByUrl(String url);

    /**
     * 获取上传文件的详细信息
     *
     * @param url url
     * @return SysAttachment
     */
    SysAttachment getSysAttachmentByUrl(String url);

}
